{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "+ 1.数据预处理-参考day1\n",
    "+ 2.通过训练集来训练简单线性回归模型\n",
    "+ 3.预测结果\n",
    "+ 4.可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>R&amp;D Spend</th>\n",
       "      <th>Administration</th>\n",
       "      <th>Marketing Spend</th>\n",
       "      <th>State</th>\n",
       "      <th>Profit</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>165349.20</td>\n",
       "      <td>136897.80</td>\n",
       "      <td>471784.10</td>\n",
       "      <td>New York</td>\n",
       "      <td>192261.83</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>162597.70</td>\n",
       "      <td>151377.59</td>\n",
       "      <td>443898.53</td>\n",
       "      <td>California</td>\n",
       "      <td>191792.06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>153441.51</td>\n",
       "      <td>101145.55</td>\n",
       "      <td>407934.54</td>\n",
       "      <td>Florida</td>\n",
       "      <td>191050.39</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>144372.41</td>\n",
       "      <td>118671.85</td>\n",
       "      <td>383199.62</td>\n",
       "      <td>New York</td>\n",
       "      <td>182901.99</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>142107.34</td>\n",
       "      <td>91391.77</td>\n",
       "      <td>366168.42</td>\n",
       "      <td>Florida</td>\n",
       "      <td>166187.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>131876.90</td>\n",
       "      <td>99814.71</td>\n",
       "      <td>362861.36</td>\n",
       "      <td>New York</td>\n",
       "      <td>156991.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>134615.46</td>\n",
       "      <td>147198.87</td>\n",
       "      <td>127716.82</td>\n",
       "      <td>California</td>\n",
       "      <td>156122.51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>130298.13</td>\n",
       "      <td>145530.06</td>\n",
       "      <td>323876.68</td>\n",
       "      <td>Florida</td>\n",
       "      <td>155752.60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>120542.52</td>\n",
       "      <td>148718.95</td>\n",
       "      <td>311613.29</td>\n",
       "      <td>New York</td>\n",
       "      <td>152211.77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>123334.88</td>\n",
       "      <td>108679.17</td>\n",
       "      <td>304981.62</td>\n",
       "      <td>California</td>\n",
       "      <td>149759.96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>101913.08</td>\n",
       "      <td>110594.11</td>\n",
       "      <td>229160.95</td>\n",
       "      <td>Florida</td>\n",
       "      <td>146121.95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>100671.96</td>\n",
       "      <td>91790.61</td>\n",
       "      <td>249744.55</td>\n",
       "      <td>California</td>\n",
       "      <td>144259.40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>93863.75</td>\n",
       "      <td>127320.38</td>\n",
       "      <td>249839.44</td>\n",
       "      <td>Florida</td>\n",
       "      <td>141585.52</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>91992.39</td>\n",
       "      <td>135495.07</td>\n",
       "      <td>252664.93</td>\n",
       "      <td>California</td>\n",
       "      <td>134307.35</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>119943.24</td>\n",
       "      <td>156547.42</td>\n",
       "      <td>256512.92</td>\n",
       "      <td>Florida</td>\n",
       "      <td>132602.65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>114523.61</td>\n",
       "      <td>122616.84</td>\n",
       "      <td>261776.23</td>\n",
       "      <td>New York</td>\n",
       "      <td>129917.04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>78013.11</td>\n",
       "      <td>121597.55</td>\n",
       "      <td>264346.06</td>\n",
       "      <td>California</td>\n",
       "      <td>126992.93</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>94657.16</td>\n",
       "      <td>145077.58</td>\n",
       "      <td>282574.31</td>\n",
       "      <td>New York</td>\n",
       "      <td>125370.37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>91749.16</td>\n",
       "      <td>114175.79</td>\n",
       "      <td>294919.57</td>\n",
       "      <td>Florida</td>\n",
       "      <td>124266.90</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>86419.70</td>\n",
       "      <td>153514.11</td>\n",
       "      <td>0.00</td>\n",
       "      <td>New York</td>\n",
       "      <td>122776.86</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>76253.86</td>\n",
       "      <td>113867.30</td>\n",
       "      <td>298664.47</td>\n",
       "      <td>California</td>\n",
       "      <td>118474.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>78389.47</td>\n",
       "      <td>153773.43</td>\n",
       "      <td>299737.29</td>\n",
       "      <td>New York</td>\n",
       "      <td>111313.02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>73994.56</td>\n",
       "      <td>122782.75</td>\n",
       "      <td>303319.26</td>\n",
       "      <td>Florida</td>\n",
       "      <td>110352.25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>67532.53</td>\n",
       "      <td>105751.03</td>\n",
       "      <td>304768.73</td>\n",
       "      <td>Florida</td>\n",
       "      <td>108733.99</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>77044.01</td>\n",
       "      <td>99281.34</td>\n",
       "      <td>140574.81</td>\n",
       "      <td>New York</td>\n",
       "      <td>108552.04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>64664.71</td>\n",
       "      <td>139553.16</td>\n",
       "      <td>137962.62</td>\n",
       "      <td>California</td>\n",
       "      <td>107404.34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>75328.87</td>\n",
       "      <td>144135.98</td>\n",
       "      <td>134050.07</td>\n",
       "      <td>Florida</td>\n",
       "      <td>105733.54</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>72107.60</td>\n",
       "      <td>127864.55</td>\n",
       "      <td>353183.81</td>\n",
       "      <td>New York</td>\n",
       "      <td>105008.31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>66051.52</td>\n",
       "      <td>182645.56</td>\n",
       "      <td>118148.20</td>\n",
       "      <td>Florida</td>\n",
       "      <td>103282.38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>65605.48</td>\n",
       "      <td>153032.06</td>\n",
       "      <td>107138.38</td>\n",
       "      <td>New York</td>\n",
       "      <td>101004.64</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>61994.48</td>\n",
       "      <td>115641.28</td>\n",
       "      <td>91131.24</td>\n",
       "      <td>Florida</td>\n",
       "      <td>99937.59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>61136.38</td>\n",
       "      <td>152701.92</td>\n",
       "      <td>88218.23</td>\n",
       "      <td>New York</td>\n",
       "      <td>97483.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>63408.86</td>\n",
       "      <td>129219.61</td>\n",
       "      <td>46085.25</td>\n",
       "      <td>California</td>\n",
       "      <td>97427.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>55493.95</td>\n",
       "      <td>103057.49</td>\n",
       "      <td>214634.81</td>\n",
       "      <td>Florida</td>\n",
       "      <td>96778.92</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>46426.07</td>\n",
       "      <td>157693.92</td>\n",
       "      <td>210797.67</td>\n",
       "      <td>California</td>\n",
       "      <td>96712.80</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>46014.02</td>\n",
       "      <td>85047.44</td>\n",
       "      <td>205517.64</td>\n",
       "      <td>New York</td>\n",
       "      <td>96479.51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>28663.76</td>\n",
       "      <td>127056.21</td>\n",
       "      <td>201126.82</td>\n",
       "      <td>Florida</td>\n",
       "      <td>90708.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>44069.95</td>\n",
       "      <td>51283.14</td>\n",
       "      <td>197029.42</td>\n",
       "      <td>California</td>\n",
       "      <td>89949.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>20229.59</td>\n",
       "      <td>65947.93</td>\n",
       "      <td>185265.10</td>\n",
       "      <td>New York</td>\n",
       "      <td>81229.06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>38558.51</td>\n",
       "      <td>82982.09</td>\n",
       "      <td>174999.30</td>\n",
       "      <td>California</td>\n",
       "      <td>81005.76</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>28754.33</td>\n",
       "      <td>118546.05</td>\n",
       "      <td>172795.67</td>\n",
       "      <td>California</td>\n",
       "      <td>78239.91</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>27892.92</td>\n",
       "      <td>84710.77</td>\n",
       "      <td>164470.71</td>\n",
       "      <td>Florida</td>\n",
       "      <td>77798.83</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>23640.93</td>\n",
       "      <td>96189.63</td>\n",
       "      <td>148001.11</td>\n",
       "      <td>California</td>\n",
       "      <td>71498.49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>15505.73</td>\n",
       "      <td>127382.30</td>\n",
       "      <td>35534.17</td>\n",
       "      <td>New York</td>\n",
       "      <td>69758.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>22177.74</td>\n",
       "      <td>154806.14</td>\n",
       "      <td>28334.72</td>\n",
       "      <td>California</td>\n",
       "      <td>65200.33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>1000.23</td>\n",
       "      <td>124153.04</td>\n",
       "      <td>1903.93</td>\n",
       "      <td>New York</td>\n",
       "      <td>64926.08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>1315.46</td>\n",
       "      <td>115816.21</td>\n",
       "      <td>297114.46</td>\n",
       "      <td>Florida</td>\n",
       "      <td>49490.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>0.00</td>\n",
       "      <td>135426.92</td>\n",
       "      <td>0.00</td>\n",
       "      <td>California</td>\n",
       "      <td>42559.73</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>542.05</td>\n",
       "      <td>51743.15</td>\n",
       "      <td>0.00</td>\n",
       "      <td>New York</td>\n",
       "      <td>35673.41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>0.00</td>\n",
       "      <td>116983.80</td>\n",
       "      <td>45173.06</td>\n",
       "      <td>California</td>\n",
       "      <td>14681.40</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    R&D Spend  Administration  Marketing Spend       State     Profit\n",
       "0   165349.20       136897.80        471784.10    New York  192261.83\n",
       "1   162597.70       151377.59        443898.53  California  191792.06\n",
       "2   153441.51       101145.55        407934.54     Florida  191050.39\n",
       "3   144372.41       118671.85        383199.62    New York  182901.99\n",
       "4   142107.34        91391.77        366168.42     Florida  166187.94\n",
       "5   131876.90        99814.71        362861.36    New York  156991.12\n",
       "6   134615.46       147198.87        127716.82  California  156122.51\n",
       "7   130298.13       145530.06        323876.68     Florida  155752.60\n",
       "8   120542.52       148718.95        311613.29    New York  152211.77\n",
       "9   123334.88       108679.17        304981.62  California  149759.96\n",
       "10  101913.08       110594.11        229160.95     Florida  146121.95\n",
       "11  100671.96        91790.61        249744.55  California  144259.40\n",
       "12   93863.75       127320.38        249839.44     Florida  141585.52\n",
       "13   91992.39       135495.07        252664.93  California  134307.35\n",
       "14  119943.24       156547.42        256512.92     Florida  132602.65\n",
       "15  114523.61       122616.84        261776.23    New York  129917.04\n",
       "16   78013.11       121597.55        264346.06  California  126992.93\n",
       "17   94657.16       145077.58        282574.31    New York  125370.37\n",
       "18   91749.16       114175.79        294919.57     Florida  124266.90\n",
       "19   86419.70       153514.11             0.00    New York  122776.86\n",
       "20   76253.86       113867.30        298664.47  California  118474.03\n",
       "21   78389.47       153773.43        299737.29    New York  111313.02\n",
       "22   73994.56       122782.75        303319.26     Florida  110352.25\n",
       "23   67532.53       105751.03        304768.73     Florida  108733.99\n",
       "24   77044.01        99281.34        140574.81    New York  108552.04\n",
       "25   64664.71       139553.16        137962.62  California  107404.34\n",
       "26   75328.87       144135.98        134050.07     Florida  105733.54\n",
       "27   72107.60       127864.55        353183.81    New York  105008.31\n",
       "28   66051.52       182645.56        118148.20     Florida  103282.38\n",
       "29   65605.48       153032.06        107138.38    New York  101004.64\n",
       "30   61994.48       115641.28         91131.24     Florida   99937.59\n",
       "31   61136.38       152701.92         88218.23    New York   97483.56\n",
       "32   63408.86       129219.61         46085.25  California   97427.84\n",
       "33   55493.95       103057.49        214634.81     Florida   96778.92\n",
       "34   46426.07       157693.92        210797.67  California   96712.80\n",
       "35   46014.02        85047.44        205517.64    New York   96479.51\n",
       "36   28663.76       127056.21        201126.82     Florida   90708.19\n",
       "37   44069.95        51283.14        197029.42  California   89949.14\n",
       "38   20229.59        65947.93        185265.10    New York   81229.06\n",
       "39   38558.51        82982.09        174999.30  California   81005.76\n",
       "40   28754.33       118546.05        172795.67  California   78239.91\n",
       "41   27892.92        84710.77        164470.71     Florida   77798.83\n",
       "42   23640.93        96189.63        148001.11  California   71498.49\n",
       "43   15505.73       127382.30         35534.17    New York   69758.98\n",
       "44   22177.74       154806.14         28334.72  California   65200.33\n",
       "45    1000.23       124153.04          1903.93    New York   64926.08\n",
       "46    1315.46       115816.21        297114.46     Florida   49490.75\n",
       "47       0.00       135426.92             0.00  California   42559.73\n",
       "48     542.05        51743.15             0.00    New York   35673.41\n",
       "49       0.00       116983.80         45173.06  California   14681.40"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 1.数据预处理\n",
    "# 导库\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "# 导入数据集\n",
    "dataset = pd.read_csv(r'C:\\Users\\碌卡\\Desktop\\python编程学习\\python数据分析\\100daysML_file\\100day\\datasets\\50_Startups.csv')\n",
    "dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[165349.2 136897.8 471784.1 'New York']\n",
      " [162597.7 151377.59 443898.53 'California']\n",
      " [153441.51 101145.55 407934.54 'Florida']\n",
      " [144372.41 118671.85 383199.62 'New York']\n",
      " [142107.34 91391.77 366168.42 'Florida']\n",
      " [131876.9 99814.71 362861.36 'New York']\n",
      " [134615.46 147198.87 127716.82 'California']\n",
      " [130298.13 145530.06 323876.68 'Florida']\n",
      " [120542.52 148718.95 311613.29 'New York']\n",
      " [123334.88 108679.17 304981.62 'California']\n",
      " [101913.08 110594.11 229160.95 'Florida']\n",
      " [100671.96 91790.61 249744.55 'California']\n",
      " [93863.75 127320.38 249839.44 'Florida']\n",
      " [91992.39 135495.07 252664.93 'California']\n",
      " [119943.24 156547.42 256512.92 'Florida']\n",
      " [114523.61 122616.84 261776.23 'New York']\n",
      " [78013.11 121597.55 264346.06 'California']\n",
      " [94657.16 145077.58 282574.31 'New York']\n",
      " [91749.16 114175.79 294919.57 'Florida']\n",
      " [86419.7 153514.11 0.0 'New York']\n",
      " [76253.86 113867.3 298664.47 'California']\n",
      " [78389.47 153773.43 299737.29 'New York']\n",
      " [73994.56 122782.75 303319.26 'Florida']\n",
      " [67532.53 105751.03 304768.73 'Florida']\n",
      " [77044.01 99281.34 140574.81 'New York']\n",
      " [64664.71 139553.16 137962.62 'California']\n",
      " [75328.87 144135.98 134050.07 'Florida']\n",
      " [72107.6 127864.55 353183.81 'New York']\n",
      " [66051.52 182645.56 118148.2 'Florida']\n",
      " [65605.48 153032.06 107138.38 'New York']\n",
      " [61994.48 115641.28 91131.24 'Florida']\n",
      " [61136.38 152701.92 88218.23 'New York']\n",
      " [63408.86 129219.61 46085.25 'California']\n",
      " [55493.95 103057.49 214634.81 'Florida']\n",
      " [46426.07 157693.92 210797.67 'California']\n",
      " [46014.02 85047.44 205517.64 'New York']\n",
      " [28663.76 127056.21 201126.82 'Florida']\n",
      " [44069.95 51283.14 197029.42 'California']\n",
      " [20229.59 65947.93 185265.1 'New York']\n",
      " [38558.51 82982.09 174999.3 'California']\n",
      " [28754.33 118546.05 172795.67 'California']\n",
      " [27892.92 84710.77 164470.71 'Florida']\n",
      " [23640.93 96189.63 148001.11 'California']\n",
      " [15505.73 127382.3 35534.17 'New York']\n",
      " [22177.74 154806.14 28334.72 'California']\n",
      " [1000.23 124153.04 1903.93 'New York']\n",
      " [1315.46 115816.21 297114.46 'Florida']\n",
      " [0.0 135426.92 0.0 'California']\n",
      " [542.05 51743.15 0.0 'New York']\n",
      " [0.0 116983.8 45173.06 'California']]\n",
      "[192261.83 191792.06 191050.39 182901.99 166187.94 156991.12 156122.51\n",
      " 155752.6  152211.77 149759.96 146121.95 144259.4  141585.52 134307.35\n",
      " 132602.65 129917.04 126992.93 125370.37 124266.9  122776.86 118474.03\n",
      " 111313.02 110352.25 108733.99 108552.04 107404.34 105733.54 105008.31\n",
      " 103282.38 101004.64  99937.59  97483.56  97427.84  96778.92  96712.8\n",
      "  96479.51  90708.19  89949.14  81229.06  81005.76  78239.91  77798.83\n",
      "  71498.49  69758.98  65200.33  64926.08  49490.75  42559.73  35673.41\n",
      "  14681.4 ]\n"
     ]
    }
   ],
   "source": [
    "X = dataset.iloc[:,:-1].values\n",
    "Y = dataset.iloc[:,4].values\n",
    "print(X)\n",
    "print(Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\preprocessing\\data.py:1961: DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  X = check_array(X, dtype=np.int)\n"
     ]
    }
   ],
   "source": [
    "# 将类别数据数字化\n",
    "from sklearn.preprocessing import LabelEncoder,OneHotEncoder\n",
    "labelencoder = LabelEncoder()\n",
    "X[:,3] = labelencoder.fit_transform(X[:,3])\n",
    "onehotencoder = OneHotEncoder(categorical_features=[3])\n",
    "X = onehotencoder.fit_transform(X).toarray()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "X[:,3]\n",
    "\n",
    "# 躲避虚拟变量\n",
    "X = X[:,1:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 划分训练集和测试集\n",
    "from sklearn.model_selection import train_test_split\n",
    "X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size = 1/4,random_state = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\linear_model\\least_angle.py:35: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  eps=np.finfo(np.float).eps,\n",
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\linear_model\\least_angle.py:597: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  eps=np.finfo(np.float).eps, copy_X=True, fit_path=True,\n",
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\linear_model\\least_angle.py:836: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  eps=np.finfo(np.float).eps, copy_X=True, fit_path=True,\n",
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\linear_model\\least_angle.py:862: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  eps=np.finfo(np.float).eps, positive=False):\n",
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\linear_model\\least_angle.py:1074: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  max_n_alphas=1000, n_jobs=1, eps=np.finfo(np.float).eps,\n",
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\linear_model\\least_angle.py:1306: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  max_n_alphas=1000, n_jobs=1, eps=np.finfo(np.float).eps,\n",
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\linear_model\\least_angle.py:1442: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  eps=np.finfo(np.float).eps, copy_X=True, positive=False):\n",
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\linear_model\\randomized_l1.py:152: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  precompute=False, eps=np.finfo(np.float).eps,\n",
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\linear_model\\randomized_l1.py:318: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  eps=np.finfo(np.float).eps, random_state=None,\n",
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\linear_model\\randomized_l1.py:575: DeprecationWarning: `np.float` is a deprecated alias for the builtin `float`. To silence this warning, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  eps=4 * np.finfo(np.float).eps, n_jobs=1,\n"
     ]
    }
   ],
   "source": [
    "# 用训练集数据训练模型\n",
    "from sklearn.linear_model import LinearRegression\n",
    "regressor = LinearRegression()\n",
    "regressor = regressor.fit(X_train,Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 用测试集数据预测结果\n",
    "y_pred = regressor.predict(X_test)\n",
    "score = regressor.score(X_test,Y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[104440.72582616 132253.81567698 132872.07174272  71707.78771428\n",
      " 178678.9934985  115078.13124331  66093.9297267   98759.7276409\n",
      " 114113.5994088  167979.49411476  95786.77295823  87785.3497979\n",
      " 110455.98228344]\n",
      "0.9315815199152062\n"
     ]
    }
   ],
   "source": [
    "print(y_pred)\n",
    "print(score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkUAAAGgCAYAAACkHxNtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzs3Xl8VNXdP/DPZBsCJCOLZDIkBFQEwk6QxRKDbVmsoE+pBYVG/T2tSn1Qwa3iUilPK6g0LiCiFp8+2gq+lED7WItgDRA0hAgJhE3QJiFAIlsygUC2yfn9cbizZJ1JZubeO/fzfr3mNTczJ3fOhGHmO9/zPeeYhBACRERERAYXpnYHiIiIiLSAQRERERERGBQRERERAWBQRERERASAQRERERERAAZFRERERAAYFBEREREBYFBEREREBIBBEREREREABkVEREREABgUEREREQEAItTugJY1Njbi1KlTiImJgclkUrs7RERE5AUhBC5cuACbzYawMO/zPwyK2nDq1CkkJiaq3Q0iIiLqgNLSUiQkJHjdnkFRG2JiYgDIP2psbKzKvSEiIiJvVFVVITEx0fk57i0GRW1QhsxiY2MZFBEREemMr6UvLLQmIiIiAoMiIiIiIgAMioiIiIgAMCgiIiIiAsCgiIiIiAgAgyIiIiIiAAyKiIiIiAAwKCIiIiICwMUbiUKHwwFkZwNlZUB8PJCaCoSHq90rIiLdYFBEFAoyM4FHHgFOnHDdlpAAvPYaMGuWev0iItIRDp8R6V1mJnDHHZ4BEQCcPClvz8xUp19ERDrDoIhIzxwOmSESovl9ym0LF8p2RETUJgZFRHqWnd08Q+ROCKC0VLYjIqI2MSgi0rOyMv+2IyIyMAZFRHoWH+/fdkREBsagiEjPUlPlLDOTqeX7TSYgMVG2IyKiNjEoItKz8HA57R5oHhgpP7/6KtcrIiLyAoMiIr2bNQv4+GOgb1/P2xMS5O1cp4iIyCtcvJEoFMyaBdx+O1e0JiLqBAZFRKEiPByYPFntXhAR6RaHz4iIiIjAoIiIiIgIAIMiIiIiIgAMioiIiIgAMCgiIiIiAsCgiIiIiAgAgyIiIiIiAAyKiIiIiAAwKCIiIiICwKCIiIiICACDIiIiIiIADIqIiIiIADAoIiIiIgLAoIiIiIgIAIMiIiIiIgAMioiIiIgAMCgiIiIiAsCgiIiIiAgAgyIiIiIiAAyKiIiIiAB0ICjasWMHZs6cCZvNBpPJhE2bNnncf/HiRSxYsAAJCQmIjo7GkCFD8Oabb3q0qa2txUMPPYTevXujW7duuO2223DixAmPNsePH8fMmTPRrVs39O7dGw8//DDq6uo82mzfvh0pKSno0qULrrnmGqxZs6ZZf1evXo0BAwagS5cuSElJQXZ2tq9PmYiIiAzA56CouroaI0eOxKpVq1q8f9GiRdi8eTP+8pe/4PDhw1i0aBEeeugh/O1vf3O2WbhwITZu3Ij169dj586duHjxImbMmAGHwwEAcDgcuPXWW1FdXY2dO3di/fr12LBhAx577DHnOYqKivCTn/wEqampyM/Px9NPP42HH34YGzZscLb58MMPsXDhQjzzzDPIz89HamoqbrnlFhw/ftzXp01EREShTnQCALFx40aP24YOHSqWLl3qcduYMWPEs88+K4QQorKyUkRGRor169c77z958qQICwsTmzdvFkII8emnn4qwsDBx8uRJZ5t169YJs9ks7Ha7EEKIJ598UgwePNjjcR544AExYcIE58/jxo0T8+fP92gzePBg8dRTT7X4fGpqaoTdbndeSktLBQDnYxIREZH22e32Dn1++72maNKkSfj73/+OkydPQgiBrKwsHD16FNOmTQMA7NmzB/X19Zg6darzd2w2G4YNG4avvvoKAJCTk4Nhw4bBZrM520ybNg21tbXYs2ePs437OZQ2X3/9Nerr61FXV4c9e/Y0azN16lTn4zS1bNkyWCwW5yUxMbHzfxAiIiLSBb8HRa+//jqSk5ORkJCAqKgoTJ8+HatXr8akSZMAAOXl5YiKikKPHj08fi8uLg7l5eXONnFxcR739+jRA1FRUW22iYuLQ0NDA86ePYuzZ8/C4XC02EY5R1OLFy+G3W53XkpLSzv+hyAiIiJdifD3CV9//XXs2rULf//735GUlIQdO3bgwQcfRHx8PH784x+3+ntCCJhMJufP7sfethFCOG93P27rHO7MZjPMZnM7z5BIu2pqgGPHgOHD1e4JEZH++DVTdPnyZTz99NPIyMjAzJkzMWLECCxYsABz5szBihUrAABWqxV1dXWoqKjw+N3Tp087szpWq7VZNqeiogL19fVttjl9+jQiIiLQq1cv9O7dG+Hh4S22aZo9IgoVS5cC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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 可视化\n",
    "import matplotlib.pyplot as plt\n",
    "plt.scatter(np.arange(len(Y_test)),Y_test,color = 'red')\n",
    "plt.plot(np.arange(len(Y_test)),y_pred,color = 'blue')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "34dfee18d5f4a96df9a8fcc719c91cf50e8ed50de2aa108bf45cd20982063274"
  },
  "kernelspec": {
   "display_name": "Python 3.7.0 64-bit ('base': conda)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
